#ifndef TIMER__
#define TIMER__

#include <ctime>
#include <vector>

/** Casovac pro stopovani doby jednotlivych algoritmu.
 * Umoznuje stopovat cely casovy usek, nekonecny pocet mezicasu a pauzu.
 */
class Timer {
public:
	/** Defaultni konstruktor.
	 * \param s pokud je true, tak je casovac rovnou spusten
	 */
	Timer(bool s = true) {
		if (s) start();
		else {
			s = 0;
		}
	}
	void start();
	void pause();
	void resume();
	double total();
	double stop();
	double lap();
	double time(int i = 0);
	double current();
private:
	clock_t s, ///< cas spusteni casovace
		s_pause, ///< cas zacatku pauzy
		p_time; ///< delka pauzy
	std::vector<double> times; ///< doby jednotlivych mezicasu
	double t_total; ///< celkovy cas od spusteni
	int count; ///< pocet mezicasu
};

#endif
